#include "BlockQueue.hpp"
#include <ctime>
#include <cstdio>
#include <unistd.h>
#include <sys/types.h>

void* comsume(void* args)
{
    blockqueue<int>* bp = static_cast<blockqueue<int>*>(args);
    while(true)
    {
        int data;
        bp->_pop(&data);
        cout<<"消费的随机数是"<<data<<endl;
        sleep(1);
    }
    return nullptr;
}
//生产者
void* production(void* args)
{
    blockqueue<int>* bp = static_cast<blockqueue<int>*>(args);
    while(true)
    {
        int data = rand()%10;
        cout<<"产生的随机数是:"<<data<<endl;
        bp->_push(data);
       
    }
    return nullptr;
}


int main()
{

    pthread_t c,p;
    srand((unsigned int)time(nullptr)^ getpid());
    blockqueue<int>* _bp = new blockqueue<int>();   //创建一个bp的对象
    //创建两个线程
    pthread_create(&c,nullptr,comsume,_bp);
    pthread_create(&p,nullptr,production,_bp);

    //等待两个线程
    pthread_join(c,nullptr);
    pthread_join(p,nullptr);
    delete _bp;
    return 0;
}